<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>使用展开语法完成参数合并</title>
</head>
<body>
    
</body>
<script>
    /*
        展开语法（点语法） --  ES6推出的新特性  
            在数组中使用的非常的频繁  在对象中同样是可以使用的   非常的方便我们的合并操作
    */

    // 在数组中使用
    let arr = [1,2,3,4,5]
    arr = [...arr,6,7,8,9]
    console.log(arr)   //(9) [1, 2, 3, 4, 5, 6, 7, 8, 9]   这个就是展开语法 非常的方便

    // 在对象中操作
    let obj = {
        name:'jimmy',
        age:22
    }
    obj = {...obj,sex:'man'}
    console.log(obj)  //{name: "jimmy", age: 22, sex: "man"}  使用点语法 可以很好的实现对象属性合并

    // 案例： 上传数据的修改默认配置
    function upload(arg={}){
        // 当用户上传数据的时候 如果或没有修改 就是会按照默认的这样的配置上传
        let config = {
            type:'*.jpeg|*.png',
            size:10000
        }
        /*
            在对象中 如果属性名一样 后写的会覆盖前面所写的内容
        */
        config = {...config,...arg}
        return config
    }
    console.log(upload({size:2000,lesson:'JS'}))   //{type: "*.jpeg|*.png", size: 2000, lesson: "JS"}
</script>
</html>